/*
 * @(#)LoginWidget.java 2011
 *
 * Copyright 2011 classic-commerce
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 * This class represents the cart summary widget that displays, at a glance, the
 * basic details of the content of the current cart. It allows the user to see
 * the quantity of items current in the cart and the sub total (without
 * applying the applicable taxes) amount cost of the items.
 *
 * @author: <a href="mailto:richard@ioniq.ca">Richard Mutezintare</a>
 *
 */
package ca.ioniq.client.widget.header;

import ca.ioniq.client.ClassicMessages;
import ca.ioniq.client.widget.ErrorMessageWidget;

import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;

public class LoginWidget extends FlowPanel {

    private static final String ID = "login_box";

    private ErrorMessageWidget errors;
    private TextBox usernameBox;
    private PasswordTextBox passwordTextBox;
    private Anchor loginLink;

    public LoginWidget(ErrorMessageWidget errors, ClassicMessages msg) {
        this.errors = errors;
        this.errors.setVisible(false);

        add(errors);

        Label usernameLabel = new Label(msg.usernameLabel());
        add(usernameLabel);
        usernameBox = new TextBox();
        usernameBox.setFocus(true);
        add(usernameBox);

        Label passwordLabel = new Label(msg.passwordLabel());
        add(passwordLabel);
        passwordTextBox = new PasswordTextBox();
        add(passwordTextBox);

        loginLink = new Anchor(msg.login());
        add(loginLink);

        getElement().setId(ID);
    }


    public void setErrors(ErrorMessageWidget errors) {
        this.errors = errors;
        if (!this.errors.isVisible()) errors.setVisible(true);
    }


    /**
     * does not actually remove the widget, so that
     * it can be re-used.
     */
    public void removeErrors() { errors.setVisible(false); }

    public TextBox getUsernameBox() { return this.usernameBox; }
    public String getUsername() { return usernameBox.getText(); }
    public void setUsernameBox(String username) {
        this.usernameBox.setText(username);
    }

    public PasswordTextBox getPasswordTextBox() { return this.passwordTextBox; }
    public String getPassword() { return passwordTextBox.getText(); }

    public Anchor getLoginLink() { return loginLink; }
}
